package com.unitd.modules.sys.dao;

import com.unitd.frame.mybatis.core.dao.IBaseDao;
import com.unitd.modules.sys.entity.SysMenu;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @desc 系统菜单信息表DAO接口
 * @filename ISysMenuDao.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date  2017-05-23
 */
public interface ISysMenuDao extends IBaseDao<SysMenu, String> {

	/**
	 * @desc 获取单条数据
	 * @param id 主键ID
	 * @return SysMenu
	 */
	SysMenu findBy(@Param("id") String id);

	/**
	 * @desc 根据条件查询获取系统菜单信息
	 * @param sysMenu  查询条件
	 * @return List
	 */
	List<SysMenu> findListBy(SysMenu sysMenu);

	/**
	 * @desc 根据条件查询获取系统菜单信息
	 * @return
	 */
	List<SysMenu> findAllData();

	/**
	 * @desc 根据父菜单，查询子菜单
	 * @param parentId 父菜单ID
	 */
	List<SysMenu> findListByParentId(@Param("parentId") String parentId);

	/**
	 * @desc 获取指定用户具有权限的菜单信息列表
	 * @param userId 指定的用户
	 * @return
	 */
	List<SysMenu> findListByUserId(@Param("userId") String userId);

	/**
	 * @desc 获取指定用户具有权限的菜单信息列表
	 * @param userId 指定的用户
	 * @return
	 */
	List<SysMenu> findListByUserIdAndPId(@Param("userId") String userId, @Param("parentId") String parentId);

	/**
	 * @desc 获取不包含按钮的菜单列表
	 * @return
	 */
	List<SysMenu> findNotButtonList();

	/**
	 * @desc 根据选择的菜单父ID获取该父菜单下的最大sort值并+1
	 * @param parentId 父菜单ID
	 * @return
	 */
	Integer getMaxSortByPId(@Param("parentId") String parentId);

	/**
	 * @desc 根据选择的菜单父ID及菜单类型,获取新增此菜单的主键ID
	 * @param menuType 父菜单类型
	 * @param parentId 父菜单ID
	 * @return
	 */
	String getPrePrimaryKey(@Param("menuType") String menuType, @Param("parentId") String parentId);

	/**
	 * @desc 根据参数信息,逻辑删除对象信息
	 * @param entity 删除参数对象
	 */
	int deleteByDelFlag(SysMenu entity);
}